import copy

# 1 普通赋值
a = [1, 2, 3]
b = [11, 22, 33]
c = [a, b]

d = c

print(id(d))
print(id(c))

# 2 浅拷贝可变类型
a = [1, 2, 3]
b = [11, 22, 33]
c = [a, b]

d = copy.copy(c)

print(id(d))
print(id(c))
print(id(d[0]))
print(id(c[0]))
print(id(d[1]))
print(id(c[1]))

# 3 浅拷贝-深层数据
a = [1, 2, 3]
b = [11, 22, 33]
c = [a, b]
#
d = copy.copy(c)
#
print(id(a))
print(id(c[0]))
print(id(d[0]))

# 4 浅拷贝不可变类型
a = (1, 2, 3)
b = (11, 22, 33)
c = (a, b)

d = copy.copy(c)

print(id(d))
print(id(c))


"""
不可变类型的浅拷⻉说明:
    通过上⾯的执⾏结果可以得知，不可变类型进⾏浅拷⻉不会给拷⻉的
    对象开辟新的内存空间，⽽只是拷⻉了这个对象的引⽤。
可变类型的浅拷⻉说明:
    通过上⾯的执⾏结果可以得知，可变类型进⾏浅拷⻉只对可变类型的
    第⼀层对象进⾏拷⻉，对拷⻉的对象会开辟新的内存空间进⾏存储，
    ⼦对象不进⾏拷⻉    
"""